package com.xyy.service;

import com.xyy.common.PageResult;
import com.xyy.dto.HealthStatisticsDTO;
import com.xyy.entity.Patient;

import java.util.List;

/**
 * 就诊人Service接口
 */
public interface PatientService {
    
    /**
     * 添加就诊人
     */
    Patient addPatient(Patient createDTO, Long userId);
    
    /**
     * 删除就诊人
     */
    boolean deletePatient(Long patientId, Long userId);
    
    /**
     * 修改就诊人信息
     */
    Patient updatePatient(Patient patient, Long userId);
    
    /**
     * 获取就诊人列表
     */
    List<Patient> getPatientList(Long userId);
    
    /**
     * 根据ID获取就诊人
     */
    Patient getPatientById(Long patientId, Long userId);
    
    // ==================== 管理员方法 ====================
    
    /**
     * 管理员修改就诊人健康指标
     */
    Patient adminUpdateHealth(Patient patient);
    
    /**
     * 管理员获取所有就诊人列表（包含完整信息）
     */
    List<Patient> adminGetAllPatients();
    
    /**
     * 管理员根据ID获取就诊人完整信息
     */
    Patient adminGetPatientById(Long id);
    
    /**
     * 统计医生管理的健康档案总数
     * @param doctorId 医生ID
     * @return 健康档案总数
     */
    Integer countHealthRecordsByDoctor(Long doctorId);
    
    // ==================== 健康数据统计方法 ====================
    
    /**
     * 获取健康数据统计
     * @return 健康数据统计DTO
     */
    HealthStatisticsDTO getHealthStatistics();
    
    /**
     * 分页获取患者健康数据
     * @param current 当前页
     * @param size 每页大小
     * @param startDate 开始日期
     * @param endDate 结束日期
     * @return 分页结果
     */
    PageResult<Patient> getPatientHealthDataPage(Integer current, Integer size, String startDate, String endDate);
} 